<HTML
><HEAD
><TITLE
>The boot process in closer look</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.63
"><LINK
REL="HOME"
TITLE="The Linux System Administrator's Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Boots And Shutdowns"
HREF="boots-and-shutdowns.html"><LINK
REL="PREVIOUS"
TITLE="An overview of boots and shutdowns"
HREF="x1887.html"><LINK
REL="NEXT"
TITLE="More about shutdowns"
HREF="x1949.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Linux System Administrator's Guide: Version 0.7</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1887.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 8. Boots And Shutdowns</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1949.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN1901"
>8.2. The boot process in closer look</A
></H1
><P
>You can boot Linux either from a floppy or from the hard
	disk.  The installation section in the Installation and 
	Getting Started guide (XXX citation)
	tells you how to install Linux so you can boot it the way
	you want to.</P
><P
>When a PC is booted, the BIOS will do various tests to
	check that everything looks all right,
	
		<A
NAME="AEN1905"
HREF="#FTN.AEN1905"
>[1]</A
>
		
	and will then start the actual booting.  It will choose a disk
	drive (typically the first floppy drive, if there is a floppy
	inserted, otherwise the first hard disk, if one is installed
	in the computer; the order might be configurable, however)
	and will then read its very first sector.  This is called the
	<I
CLASS="GLOSSTERM"
>boot sector</I
>; for a hard disk, it is also
	called the <I
CLASS="GLOSSTERM"
>master boot record</I
>, since a
	hard disk can contain several partitions, each with their own
	boot sectors.</P
><P
>The boot sector contains a small program (small enough to
	fit into one sector) whose responsibility is to read the actual
	operating system from the disk and start it.  When booting Linux
	from a floppy disk, the boot sector contains code that just reads
	the first few hundred blocks (depending on the actual kernel
	size, of course) to a predetermined place in memory.  On a Linux
	boot floppy, there is no filesystem, the kernel is just stored
	in consecutive sectors, since this simplifies the boot process.
	It is possible, however, to boot from a floppy with a filesystem,
	by using LILO, the LInux LOader.</P
><P
>When booting from the hard disk, the code in the master
	boot record will examine the partition table (also in the master
	boot record), identify the active partition (the partition that is
	marked to be bootable), read the boot sector from that partition,
	and then start the code in that boot sector.  The code in the
	partition's boot sector does what a floppy disk's boot sector
	does: it will read in the kernel from the partition and start it.
	The details vary, however, since it is generally not useful to
	have a separate partition for just the kernel image, so the
	code in the partition's boot sector can't just read the disk
	in sequential order, it has to find the sectors wherever the
	filesystem has put them.  There are several ways around this
	problem, but the most common way is to use LILO.  (The details
	about how to do this are irrelevant for this discussion, however;
	see the LILO documentation for more information; it is most
	thorough.)</P
><P
>When booting with LILO, it will normally go right ahead
	and read in and boot the default kernel.  It is also possible
	to configure LILO to be able to boot one of several kernels,
	or even other operating systems than Linux, and it is possible
	for the user to choose which kernel or operating system is to
	be booted at boot time.  LILO can be configured so that if one
	holds down the <B
CLASS="KEYCAP"
>alt</B
>, <B
CLASS="KEYCAP"
>shift</B
>, or
	<B
CLASS="KEYCAP"
>ctrl</B
> key at boot time (when LILO is loaded),
	LILO will ask what is to be booted and not boot the default
	right away.  Alternatively, LILO can be configured so that it
	will always ask, with an optional timeout that will cause the
	default kernel to be booted.</P
><P
>With LILO, it is also possible to give a <I
CLASS="GLOSSTERM"
>kernel
	command line argument</I
>, after the name of the kernel
	or operating system.</P
><P
>Booting from floppy and from hard disk have both their
	advantages, but generally booting from the hard disk is nicer,
	since it avoids the hassle of playing around with floppies.
	It is also faster.  However, it can be more troublesome to install
	the system to boot from the hard disk, so many people will first
	boot from floppy, then, when the system is otherwise installed
	and working well, will install LILO and start booting from the
	hard disk.</P
><P
>After the Linux kernel has been read into the memory, by
	whatever means, and is started for real, roughly the following
	things happen:
	
	<P
></P
><UL
><LI
><P
>	The Linux kernel is installed compressed, so it will first
	uncompress itself.  The beginning of the kernel image
	contains a small program that does this.
	</P
></LI
><LI
><P
>	If you have a super-VGA card that Linux
	recognises and that has some special text modes (such as 100
	columns by 40 rows), Linux asks you which mode
	you want to use.  During the kernel compilation, it is
	possible to preset a video mode, so that this is never asked.
	This can also be done with LILO or <B
CLASS="COMMAND"
>rdev</B
>.
	</P
></LI
><LI
><P
>	After this, the kernel checks what other hardware there is
	(hard disks, floppies, network adapters, etc), and configures
	some of its device drivers appropriately; while it does this,
	it outputs messages about its findings.  For example, when I
	boot, I it looks like this:

<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="COMPUTEROUTPUT"
>LILO boot:
Loading linux.
Console: colour EGA+ 80x25, 8 virtual consoles
Serial driver version 3.94 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
lp_init: lp1 exists (0), using polling driver
Memory: 7332k/8192k available (300k kernel code, 384k reserved, 176k 
data)
Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
Loopback device init
Warning WD8013 board not found at i/o = 280.
Math coprocessor using irq13 error reporting.
Partition check:
  hda: hda1 hda2 hda3
VFS: Mounted root (ext filesystem).
Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20</TT
></PRE
></FONT
></TD
></TR
></TABLE
>

	The exact texts are different on different systems, depending
	on the hardware, the version of Linux being used, and how
	it has been configured.
	</P
></LI
><LI
><P
> Then the kernel will try to mount the root
	filesystem.  The place is configurable at compilation time,  or
	any time with <B
CLASS="COMMAND"
>rdev</B
> or LILO.	The filesystem
	type is detected automatically.  If the mounting of the root
	filesystem fails, for example because you didn't remember to
	include the corresponding filesystem driver in the kernel, the
	kernel panics and halts the system (there isn't much it can do,
	anyway).  </P
><P
>The root filesystem is usually mounted read-only (this can
	be set in the same way as the place).  This makes it possible
	to check the filesystem while it is mounted; it is not a good
	idea to check a filesystem that is mounted read-write.
	</P
></LI
><LI
><P
> After this, the kernel starts
	the program <B
CLASS="COMMAND"
>init</B
> (located in
	<TT
CLASS="FILENAME"
>/sbin/init</TT
>) in the background (this will
	always become process number 1).  <B
CLASS="COMMAND"
>init</B
> does
	various startup chores.  The exact things it does depends on how
	it is configured; see <A
HREF="init.html"
>Chapter 9</A
> for more information
	(not yet written).  It will at least start some essential
	background daemons.  </P
></LI
><LI
><P
> <B
CLASS="COMMAND"
>init</B
> then switches to
	multi-user mode, and starts a <B
CLASS="COMMAND"
>getty</B
> for virtual
	consoles and serial lines.  <B
CLASS="COMMAND"
>getty</B
> is the
	program which lets people log in via virtual consoles and serial
	terminals.  <B
CLASS="COMMAND"
>init</B
> may also start some other
	programs, depending on how it is configured.  </P
></LI
><LI
><P
> After this, the boot is complete, and the system
	is up and running normally.  </P
></LI
></UL
>
    	</P
></DIV
><H3
CLASS="FOOTNOTES"
>Notes</H3
><TABLE
BORDER="0"
CLASS="FOOTNOTES"
WIDTH="100%"
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="5%"
><A
NAME="FTN.AEN1905"
HREF="x1901.html#AEN1905"
>[1]</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="95%"
><P
>This is called
		the <I
CLASS="GLOSSTERM"
>power on self test</I
>, or 
		<I
CLASS="GLOSSTERM"
>POST</I
> for short.</P
></TD
></TR
></TABLE
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1887.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1949.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>An overview of boots and shutdowns</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="boots-and-shutdowns.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>More about shutdowns</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>